package bar.dark.lee.alarm;

import java.util.HashMap;

import android.content.Context;
import android.database.Cursor;
import bar.dark.lee.alarm.common.DBSQLite;
import bar.dark.lee.alarm.common.DBSQLite.ParseSelectData;

/**
 * 데이터 베이스의 초기 값 셋팅과 모두 지우는것에 대한 관리 클래스
 * @author darkwlstn
 *
 */
public class DBInit
{
	private DBSQLite dbSql;
	private boolean returnFlag = false;
	
	private String sql;
	
	public DBInit(Context context)
	{
		dbSql = DBSQLite.getInstance(context);
	}

	public void setTable(Context context)
	{
		// 알람 테이블
		sql = "CREATE TABLE alarm (" +
				"id integer PRIMARY KEY autoincrement," +
				"time text NOT NULL DEFAULT '0', " +			// 알람이 울리는 시간 HHMM타입
				"timename text NOT NULL DEFAULT '0', " +			// 알람이 울리는 시간 HH : MM 타입
				"effect text NOT NULL DEFAULT '-1', " +			// 효과 번호
				"effectname text NOT NULL DEFAULT '', " +			// 효과이름
				//"sound text NOT NULL DEFAULT '기본알람주소', " +			// sound 파일 주소 
				"sound text NOT NULL, " +			// sound 파일 주소
				"soundname text NOT NULL, " + 		// sound 파일명
				"date text NOT NULL DEFAULT '0', " +			// 알람이 울리는 요일 0:안울림 1:일요일 7:토요일
				"datename text NOT NULL DEFAULT '', " +			// 알람이 울리는 이름
				"snoozeminute text NOT NULL DEFAULT '0', " +	// 다시 울림 간격 분  0:안울림 ex:0010-10분마다
				"snoozeminutename text NOT NULL DEFAULT '', " +	// 다시 울림 이름
				"memo text NOT NULL DEFAULT ''" +				// 메모 내용
				");";
		setCreateTable(context, "alarm", sql);
		
		// 음악 파일 경로 테이블
		sql = "CREATE TABLE sound_location (" +
				"id integer PRIMARY KEY autoincrement," +
				"path text NOT NULL DEFAULT ''" +			// 폴더  위치
				");";
		setCreateTable(context, "sound_location", sql);
	}

	private void initAlarmTable(Context context)
	{
		HashMap<String, String> map = new HashMap<String, String>();
		dbSql.insert(context, map, "alarm");
	}
	
	/**
	 * 초기 테이블을 생성하는 메소드
	 * @param tableName 테이블이름
	 * @param sql 쿼리문
	 */
	private boolean setCreateTable(final Context context, String tableName, final String sql)
	{
		dbSql.selectMapTile(context, "SELECT tbl_name FROM sqlite_master WHERE tbl_name = '" + tableName + "'", new ParseSelectData()
		{
			@Override
			public void resultData(Cursor c)
			{
				int count = c.getCount();
				
				if (count > 0)
				{
					returnFlag = false;
					return;
				}
				
				dbSql.createTable(context, sql);
				returnFlag = true;
			}
		});
		
		return returnFlag;
	}
	
	/**
	 * 테이블을 없애는 메소드
	 * @param context
	 * @param tableName
	 */
	private void setDropTable(final Context context, final String tableName)
	{
		dbSql.selectMapTile(context, "SELECT tbl_name FROM sqlite_master WHERE tbl_name = '" + tableName + "'", new ParseSelectData()
		{
			@Override
			public void resultData(Cursor c)
			{
				int count = c.getCount();
				
				if (count > 0)
				{
					dbSql.dropTable(context, tableName);
				}
				
				return;
			}
		});
	}
	
	/**
	 * 테이블을 모두 없애버린다.
	 * @param context
	 */
	public void initDropTable(Context context)
	{
		setDropTable(context, "alarm");
	}
}
